secondary keyの正規化
この辺の節
理想的なCache操作ができるようにするために、Varyで指定されたheaderの内容を編集する
正規化によって、keyを編集することはやや手間である
厳密にやるならばRxReq, TxReq, RxResp, TxRespの全ての処理を修正する必要がある
例↓
resourceの種類数と全く一致するようなkeyを指定するのが理想的
例えば、
PCとMobileで出し分けたい、という時に、
User-Agentを指定してしまうと、殆どcacheとしての意味をなさない
Fastlyの記事によれば、100,000件のrequestの内、8,000件が異なるUser-Agentだったらしい ここでは例えばX-device-typeのようなcustom headerを定義して、PC | mobileの2値しか取らないようにして、clientに実装するなどすればいい
Vary: Referer
「外部から来たかどうか」だけわかればいいので正規化
e.g. Accept-Encoding
Fastlyの記事の例によれば、100,000件の内、44件が異なるAccept-Encodingだったらしい Serverがgzipにしか対応していない場合、かなり無駄が生じていることになる
この記事内ではAccept-Encodingの正規化をしている
「gzipを含むかどうか」でheaderを書き換えるようにVCLを書いている
含むなら、Accept-Encoding: gzipに変換し、
含まないなら、Accept-Encodingを付けない
という2種類になる
e.g. User-Agent
でも、これは多様すぎるので、逆にcacheが効きづらくなりそう